package com.extension.company.common.utils;

import android.content.Context;
import android.net.Uri;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.extension.company.admin.R;
import com.extension.company.common.widget.glideRadioRectF.RoundedCornersTransform;

import java.io.File;

/**
 * 作者:zwk
 * 联系方式：497981239@qq.com
 * 时间：on 2019/7/5 16:08
 * 功能：使用Glide 4.9 的图片加载工具类
 */
public class GlideUtils {

	/**
	 * 功能：加载sd卡上的图片
	 *
	 * @param context 调用者上下文
	 * @param imgPath 本地图片绝对的路径
	 * @param imgView 图片控件
	 */
	public static void loadSDImg(Context context, String imgPath, ImageView imgView) {
		File file = new File(imgPath);
		Glide.with(context).load(file).into(imgView);
	}

	/**
	 * 功能：加载应用drawable中的图片的资源
	 *
	 * @param context    调用者上下文
	 * @param drawableID 应用资源id
	 * @param imageView  图片控件
	 */
	public static void loadDrawableImg(Context context, int drawableID, ImageView imageView) {
		Glide.with(context).load(drawableID).into(imageView);
	}

	/**
	 * 功能:加载二进制数据流
	 *
	 * @param context   调用者上下文
	 * @param imgByte   图片二进制数据流
	 * @param imageView 图片控件
	 */
	public static void loadByteImg(Context context, byte[] imgByte, ImageView imageView) {
		Glide.with(context).load(imgByte).into(imageView);
	}

	/**
	 * 功能：加载uri图片
	 *
	 * @param context   调用者上下文
	 * @param uri       图片的uri地址
	 * @param imageView 图片控件
	 */
	public static void loadUriImg(Context context, Uri uri, ImageView imageView) {
		Glide.with(context).load(uri).into(imageView);
	}

	public static void loadPE(Context context, String path, ImageView imageView) {
		RequestOptions requestOptions = new RequestOptions()
				.placeholder(R.color.bar_grey)  // 占位图
				.error(R.color.bar_grey)         // 错误图
				.diskCacheStrategy(DiskCacheStrategy.NONE)  // 不使用任何缓存
//				.centerCrop()    // 裁切图片中心，将imgeView填满
				.fitCenter()  // 图片尺寸缩放的到imgeView固定大小。会缩放图片将图片完全显示出来
				.override(400, 400); // 裁切图片的尺寸
		Glide.with(context).load(path).apply(requestOptions).into(imageView);
	}


	/*
	 * Transformations篇
	 * 对图片进行操作：图片切圆角、修改图片的尺寸、范围、颜色、像素位置
	 *  切圆角图片
	 *  圆角矩形
	 * */

//	public static void loadRdiuRect(Context context, String path, ImageView imgView) {
//		RequestOptions requestOptions = new RequestOptions()
//				.transform(new CenterCrop(), new RoundedCorners(20)).override(200, 200);
//		Glide.with(context).load(path).apply(requestOptions).into(imgView);
//	}

	/**
	 * 加载圆形图片
	 *
	 * @param context   上下文
	 * @param path      图片的地址
	 * @param imageView 加载图片的控件
	 */
	public static void loadCircle(Context context, String path, ImageView imageView) {
		RequestOptions requestOptions = new RequestOptions()
				.transform(new CircleCrop())
				.override(300, 300);
		Glide.with(context).load(path).apply(requestOptions).into(imageView);

	}

	/**
	 * 随意定制矩形四个角是否是圆角还是直角
	 *
	 * @param context   上下文
	 * @param path      路径
	 * @param imageView 加载 图片的 控件
	 */
	public static void loadRect(Context context, String path, ImageView imageView) {
		RoundedCornersTransform transform = new RoundedCornersTransform(context, 20); // 设置圆角率
		transform.setNeedCorner(true, true, false, false);
		RequestOptions options = new RequestOptions()
				.placeholder(R.color.bar_grey)
				.transform(transform)
				.override(200, 200);
		Glide.with(context).asBitmap().load(path).apply(options).into(imageView);
	}


}
